c# 枚举定义前的[Flags]是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/09/23 05:59:14
[Flags] enum Status { Ready=0x1, OffLine=0x2,
Waiting=0x4, TransmitOK=0x8,
RecieveOK=0x10, OnLine=0x20 }
和直接定义这个枚举对象 有什么区别?

这种用处很大,比如权限、执行状态等,都可以用一个int型保存到数据库中,C#中使用枚举可以处理这个问题。
[Flags]

public enum Permission
{
create = 1,
read = 2,
update = 4,
delete = 8,
}

在数据库中判断:
AND (@permission IS NULL OR @permission=0 OR permission &@permission =@permission)

加个属性是程序集的说明信息

设置一个变量flag,是一个来表示判断的变量,当做标志

class FlagsAttributeDemo
{
// Define an Enum without FlagsAttribute.
enum SingleHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};

// Define an Enum with FlagsAttribute.
[FlagsAttribute]
enum MultiHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};

static void Main( )
{
Console.WriteLine(
"This example of the FlagsAttribute